home *** CD-ROM | disk | FTP | other *** search
/ Aminet 4 / Aminet 4 - November 1994.iso / aminet / comm / cnet / cn305c_2.lha / programming / cnet.h < prev    next >
C/C++ Source or Header  |  1994-01-28  |  52KB  |  2,324 lines

  1. #include <exec/types.h>
  2.  
  3. #define CNET_VERSION "$VER: CNet PRO 3.05"
  4.  
  5. #define TOP_STAT 51
  6. #define TOP_NOSTAT 11
  7.  
  8. #define C_BLACK  0
  9. #define C_RED    4
  10. #define C_GREEN  2
  11. #define C_YELLOW 6
  12. #define C_BLUE   1
  13. #define C_PURPLE 5
  14. #define C_CYAN   3
  15. #define C_WHITE  7
  16.  
  17. #define GRN_BLK 0x20
  18. #define YEL_BLK 0x60
  19. #define BLU_BLU 0x11
  20. #define CYN_BLK 0x30
  21. #define CYN_BLU 0x31
  22. #define WHT_BLK 0x70
  23. #define WHT_RED 0x74
  24. #define WHT_BLU 0x71
  25. #define WHT_PUR 0x75
  26.  
  27. #define EVER ;;
  28.  
  29. #define EDHANDLE_FLAG        0x01    /* bit defs for ABits2 of struct Privs */
  30. #define EDREALNAME_FLAG        0x02
  31. #define EDADDRESS_FLAG        0x04
  32. #define EDVOICE_FLAG        0x08
  33. #define EDDATA_FLAG        0x10
  34. #define BANNER_FLAG        0x20
  35. #define NOT_USED_FLAG        0x40
  36. #define PORTMONITOR_FLAG    0x80
  37. #define VOTEMAINT_FLAG        0x0100
  38. #define ALARMSYSOP_FLAG        0x0200
  39. #define OPENSCREEN_FLAG        0x0400
  40. #define OPENCAPTURE_FLAG    0x0800
  41. #define NETMAIL_FLAG        0x1000
  42. #define FREQSEND_FLAG        0x2000
  43. #define NETCOSTEXEMPT_FLAG    0x4000
  44. #define EXPANSION1_FLAG        0x8000
  45. #define EXPANSION2_FLAG        0x010000
  46. #define EXPANSION3_FLAG        0x020000
  47. #define EXPANSION4_FLAG        0x040000
  48. #define UUCPMAIL_FLAG        0x080000
  49. #define NETCOSTCREDITS_FLAG    0x100000
  50. #define HOLDANDCRASH_FLAG    0x200000
  51. #define EXPANSION8_FLAG        0x400000
  52. #define BROADCAST_FLAG        0x800000
  53. #define EXPANSION10_FLAG    0x01000000
  54.  
  55. #define EMAIL_FLAG        0x01    /* bit defs for ABits of struct Privs */
  56. #define    PFILE_FLAG        0x02
  57. #define GFILE_FLAG        0x04
  58. #define    ULIST_FLAG        0x08
  59. #define    SYSOP_FLAG        0x10
  60. #define    REWARDS_FLAG        0x20    /* may receive download rewards? */
  61. #define    FCREDEX_FLAG        0x40
  62. #define BCREDEX_FLAG        0x80
  63. #define    EXPIREMAIL_FLAG        0x0100
  64. #define    BULK_FLAG        0x0200
  65. #define PARTY_FLAG        0x0400
  66. #define    URGENT_FLAG        0x0800
  67. #define    TIMESBP_FLAG        0x1000
  68. #define    FILEADD_FLAG        0x2000
  69. #define    READANY_FLAG        0x4000
  70. #define    DELETEANY_FLAG        0x8000
  71. #define XXXXXXXXX_FLAG        0x010000    /* not used */
  72. #define    XXXXXXXXX4_FLAG        0x020000
  73. #define AUTOVALID_FLAG        0x040000
  74. #define    XXXXXXXXX2_FLAG        0x080000    /* not used */
  75. #define    SEEANON_FLAG        0x100000
  76. #define    XXXXXXXXX3_FLAG        0x200000    /* not used */
  77. #define    CONF_FLAG        0x400000
  78. #define CONFCON_FLAG        0x800000
  79. #define MCI1_FLAG        0x01000000
  80. #define MCI2_FLAG        0x02000000
  81. #define    RELOGON_FLAG        0x04000000
  82. #define RECEIVEMAIL_FLAG     0x08000000
  83. #define FORWARD_FLAG           0x10000000
  84. #define VOTETOPIC_FLAG      0x20000000
  85. #define VOTECHOICE_FLAG     0x40000000
  86. #define NOLOCKS_FLAG        0x80000000
  87.  
  88. struct RangeContext {
  89.     long    nparts;
  90.     long    parts[10][2];
  91.     long    set;
  92.     long    element;
  93. };
  94.  
  95. struct DrawElement {
  96.     UBYTE    x;        /* x screen position */
  97.     UBYTE    y;        /* y screen position */
  98.     UBYTE    att;        /* the character's attribute (colors) */
  99.     UBYTE    att2;        /* the character's attribute (others) */
  100.     UBYTE    c;        /* the character */
  101.     UBYTE    att0;        /* Was the attribute (underneath) */
  102.     UBYTE    att20;        /* Was the attribute (underneath) */
  103.     UBYTE    c0;        /* Was the character (underneath) */
  104. };
  105.  
  106. struct VDEentry {
  107.     char    text[48];
  108.  
  109.     short    xpos,        /* where to print these things */
  110.         ypos;
  111.  
  112.     long    min,        /* for numerix */
  113.         max;        /* for numerix */
  114.  
  115.     short    length,        /* for string entry, field size */
  116.                 /* for bit boolean, which bit? */
  117.  
  118.         type;        /* 0 = UBYTE 0/1
  119.                    1 = ULONG BIT 0/1
  120.                    2 = Text (char *)
  121.                    3 = BYTE numeric
  122.                    4 = short numeric
  123.                    5 = USHORT numeric
  124.                    6 = long numeric
  125.                    7 = date
  126.                    8 = flags
  127.                    9 = ordered BBSTEXT list
  128.                    10= ordered BBSMENU list
  129.                    11= char **
  130.                    12= UBYTE BIT 0/1 */
  131.  
  132.     long    offset;        /* position in structure */
  133.  
  134.     short    screen0,    /* belongs-to screen */
  135.         screen2;    /* goes-to screen, -1 for exit */
  136.  
  137.     short    goup,        /* VDEentry for movement */
  138.         godown,
  139.         goleft,
  140.         goright;
  141.  
  142.     UWORD    ghost;
  143. };
  144.  
  145. struct TermLink {
  146.     char    dial[32];
  147.     long    baud;
  148.     char    ports[40];
  149.     long    access;
  150.     short    rate;
  151.     char    name[38];
  152.     short    databits;
  153. };
  154.  
  155. struct LogType {
  156.     char    name  [10];
  157.     short    id;
  158.  
  159.     char    custom[10];
  160.  
  161.     UBYTE    flag;
  162.     UBYTE    other;
  163. };
  164.  
  165. struct    FidoType {
  166.     char    Name[25];
  167.  
  168.     USHORT    ZoneB,  Zone,
  169.         NetB,   Net,
  170.         NodeB,  Node,
  171.         PointB, Point;
  172.  
  173.     USHORT    ZoneC, NetC, NodeC, PointC;
  174.  
  175.     char    EchoOrigin[78];
  176.     USHORT    LoZone;
  177.  
  178.     char    NetOrigin[76];
  179.     USHORT    Pointnet;
  180.     USHORT    HiZone;
  181. };
  182.  
  183. struct    ProtoType {
  184.     char    Name[16];
  185.     char    Env[36];
  186.     short    Flags;
  187.     char    One[2];
  188.     char    Path[22];
  189. };
  190.  
  191. struct    ArcType {
  192.     char    Suffix[8];
  193.     char    Keyword[16];
  194.     char    View[64];
  195.     char    Test[64];
  196.     char    Pack[64];
  197.     char    Extract[64];
  198.  
  199.     long    Row;
  200.     long    Column;
  201. };
  202.  
  203. struct    EditorType {
  204.     char    name[20];
  205.     char    path[32];
  206.     long    flags;
  207. };
  208.  
  209. struct    Config1 {
  210.     char    MySystemName[26];
  211.     char    MySysopName[26];
  212.     char    MyLocation[26];
  213.     char    MyPhoneNumber[20];
  214.     char    MyBBSID[10];
  215.  
  216.     char    FontName[40];
  217.     long    DefBalance;
  218.     long    DefaultColor;
  219.     long    BlankTicks;
  220.     long    BlankBright;
  221.  
  222.     long    nUDBASEx;        /* highest UDBASE partition */
  223.     long    MaxShortLines;        /* Short description lines */
  224.     long    MaxOpenPfiles;        /* stuff from BBSCONFIG */
  225.     long    maxUserAccounts;
  226.     long    NumRooms;
  227.     long    nLinkPorts;        /* max link ID            */
  228.     long    nsub;            /* */
  229.     long    BListPurgeDays;
  230.     long    nselect;        /* */
  231.     long    nupload;
  232.     long    nlist;
  233.     long    maxYankTasks;
  234.     long    maxYankSize;
  235.     long    maxYankDays;
  236.     long    maxLogonAttempts;
  237.     long    maxLogonTime;
  238.     long    maxYanksPerUser;
  239.  
  240.     long    DefNetCredits;
  241.     long    DefByteCredits;
  242.     long    DefFileCredits;
  243.     char    MyCountry[4];
  244.     char    MyAreaCode[12];
  245.     char    DefDefProtocol[4];
  246.     char    Yprefix[4];        /* Yank identifier */
  247.     long    DefDoorPoints;
  248.     long    DefTimeForm;
  249.  
  250.     UBYTE    MyLinkID;
  251.  
  252.     UBYTE    LogonFeedback;
  253.     UBYTE    LogonSearch;
  254.     UBYTE    GuestUsers;
  255.     UBYTE    HideStatus;
  256.     UBYTE    ConfProfile;
  257.     UBYTE    MailFeedback;
  258.     UBYTE    SeparateTexts;
  259.     UBYTE    IndentSpaces;
  260.     UBYTE    CIDvalidate;
  261.     UBYTE    CIDhandleskip;
  262.     UBYTE    SkipIdlePorts;
  263.  
  264.     char    MyLinkPass[8];
  265.  
  266.     char    OLMpath[40],
  267.         ZIPpath[40],
  268.         EXTRACTpath[40],
  269.         YANKwork[40],
  270.         RAMpath[40],
  271.         TERMpath[40],
  272.         LocalEditor[40],
  273.         CDROMpath[40],
  274.         DictPath[40];
  275.  
  276.     char    FKey [10][80];
  277.     char    TFKey[10][80];
  278.  
  279.     USHORT    DColors2[2];
  280.     USHORT    DColors4[4];
  281.     USHORT    DColors8[8];
  282.     USHORT    DColors16[16];
  283.  
  284.     long    narc;
  285.     long    ned;
  286.     long    nproto;
  287.     long    nfido;
  288.     long    nlog;
  289.  
  290.     struct    ArcType       arc   [20];
  291.     struct    EditorType ed     [8];
  292.     struct    ProtoType  proto [16];
  293.     struct    FidoType   fido  [12];
  294.     struct    LogType       log   [88];
  295.  
  296.     char    MyUUCPName[44];
  297.     char    OutboundPath[40];
  298.     char    InboundPath[40];
  299.  
  300.     ULONG    TossInputSize;
  301.     ULONG    TossOutputSize;
  302.     USHORT    DupeTableSize;
  303.  
  304.     UBYTE    BadUnknown;
  305.     UBYTE    Trapdoor174;
  306.     UBYTE    BadDupes;
  307.     UBYTE    ZoneGateAdjust;
  308.     UBYTE    ShowKludges;
  309.     UBYTE    ThreeD;
  310.     UBYTE    DeleteUUCP;
  311.     UBYTE    CIDsilence;
  312.     UBYTE    TwoDotMsg;
  313.  
  314.     char    expansion[73];
  315.  
  316.     char    Nodelist[40];
  317. };
  318.  
  319. struct LinkPortUser {
  320.     short    tick;
  321.  
  322.     UBYTE    channel;
  323.     char    name[21];
  324. };
  325.  
  326. struct LinkPort {
  327.     long    s;                /* serial number */
  328.  
  329.     short    ports;
  330.     char    name[22];
  331.  
  332.     struct    LinkPortUser user[100];
  333. };
  334.  
  335. struct IsDate {        /* must LEAVE as BYTE */
  336.     BYTE Year;
  337.     BYTE Month;
  338.     BYTE Date;
  339.     BYTE Hour;
  340.     BYTE Minute;
  341.     BYTE Second;
  342. };
  343.  
  344. /* LONG aligned */
  345.  
  346. struct RoomConfig {
  347.     long    Access;        /* which groups may enter */
  348.  
  349.     short    Creator;    /* who created this room (id#) */
  350.     short    Youngest;
  351.     short    Oldest;
  352.  
  353.     UBYTE    Doors;
  354.     UBYTE    NameType;
  355.     UBYTE    Gender;
  356.     UBYTE    Quiet;
  357.     UBYTE    Public;
  358.     UBYTE    PermaRoom;
  359.  
  360.     char    Name[31];
  361.     char    Topic[31];
  362.     char    Entry[81];    /* Messages for entry, exit */
  363.     char    Exit[81];
  364.  
  365.     UBYTE    Scribe;            /* are we writing a scribe? */
  366.     UBYTE    MCIScribe;        /* remove MCI's ?? */
  367.     char    SName[78];        /* name of current scribe file */
  368.  
  369.     UBYTE    Channel;
  370.     UBYTE    LinkID;
  371.  
  372.     UBYTE    Invited[300];        /* 1 bit each for 2400 users */
  373.  
  374.     short    MaxUsers;
  375.     UBYTE    Chaos;
  376.     UBYTE    LurkTimeout;
  377.  
  378.     short    NoiseSet;
  379. };
  380.  
  381. struct Room {
  382.     struct    RoomConfig rc;
  383.  
  384.     long    Pointer;
  385.     long    Users;            /* how many users are in this room */
  386.  
  387.     short    pSBuff;            /* pointer into Scribe Buffer */
  388.  
  389.     UBYTE    Buffer[15000];        /* Actual I/O buffer (Q) */
  390.  
  391.     UBYTE    SBuff[1024];        /* buffer for Scribe */
  392. };
  393.  
  394. /* LONG aligned.  Total length == 304 */
  395.  
  396. struct RoomUser {
  397.     long    MyPointer;        /* 0 */
  398.     long    UID;            /* 4 */
  399.     short    Room;            /* 8 */
  400.  
  401.     char    Entry[71];        /* 10 */
  402.     char    Exit[71];
  403.     char    Topic[31];
  404.     char    Alias[21];
  405.     char    Noise[71];
  406.     UBYTE    Action;
  407.     UBYTE    DefRoom;
  408.     UBYTE    Quit;
  409.     UBYTE    AllowReal;
  410.  
  411.     UBYTE    expansion[25];        /* 278 */
  412. };
  413.  
  414. struct SelectType {            /* Select list */
  415.     long    Size;
  416.  
  417.     char    Title   [32];
  418.     char    Location[96];        /* physical path to file */
  419.     short    Base;            /* physical subboard # */
  420.  
  421.     UBYTE    SDownFiles;        /* Which accounting schedule ? */
  422.     UBYTE    SDownBytes;
  423.  
  424.     UBYTE    temp_rem;        /* DS from DS list!! */
  425.     UBYTE    CDROM;            /* Copy to CDROMpath before download? */
  426.     BYTE    FreeStuff;
  427.     UBYTE    AutoKill;        /* 1==mark for amaint deletion when downloaded
  428.                        2==Yank, 3==DELETE when unselected */
  429.  
  430.     long    ByteDownload;        /* credits to subtract when this */
  431.     short    FileDownload;        /* item is downloaded ... */
  432.                     /* makes * faster by being here */
  433.     struct    IsDate ADate;        /* utility ... AO adopt dates? */
  434.  
  435.     long    Number;            /* item number */
  436. };
  437.  
  438. struct BaseUser {
  439.     long    UID;            /* ==IDNumber if user's been here */
  440.  
  441.     BYTE    Joined;            /* -1 dropped, 0 sub.def., 1 joined  */
  442.     BYTE    Invited;        /* -1 denied,  0 sub.def., 1 invited */
  443.     BYTE    Sort;
  444.     UBYTE    scan_flags;        /* used to 'mark' subboards */
  445.  
  446.     struct    IsDate LastMNew;
  447.     struct    IsDate MNewDate;
  448.  
  449.     long    Created;        /* when sub was created */
  450.  
  451.     char    Alias[22];
  452.     BYTE    Carbons;        /* -1 no, 0 sub.def., 1 yes */
  453.     UBYTE    MNewSave;
  454.  
  455.     short    tome0;
  456.     short    tome1;            /* while "online" */
  457.  
  458.     char    expansion[12];
  459. };
  460.  
  461. struct HeaderType {
  462.     struct    IsDate ShowDate;    /* for display */
  463.     struct    IsDate EditDate;    /* last edited */
  464.     struct    IsDate PostDate;
  465.  
  466.     short    ByAccount;
  467.  
  468.     char    NetAddress[52];        /* May be shortened */
  469.     long    UUCPnumber;
  470.  
  471.     char    other[16];
  472.  
  473.     char    By[36];            /* Real name or alias */
  474.     char    ByUser[24];        /* Handle */
  475.     long    ByID;
  476.  
  477.     char    To[36];
  478.     char    ToUser[24];
  479.     long    ToID;
  480.  
  481.     UBYTE    ByNotParanoid;        /* allow showing real name? */
  482.     UBYTE    ByAnonymous;
  483.     UBYTE    ToAnonymous;
  484.     UBYTE    Private;
  485.  
  486.     UBYTE    Imported;
  487.     UBYTE    ByAlias;        /* is BY an alais for ByUser? */
  488.     UBYTE    ToNotParanoid;        /* allow showing real name? */
  489.     UBYTE    ToAlias;        /* is TO an alias for ToUser? */
  490.  
  491.     short    ToAccount;        /* for SendToMailBox() */
  492.  
  493.     ULONG    Magic;            /* to ensure alignment   */
  494.     long    Number;            /* unique message number */
  495.  
  496.     long    Text;
  497.     long    TextLen;
  498.  
  499.     char    Organ[31];
  500.  
  501.     UBYTE    Received;
  502.  
  503.     short    unknown;
  504.  
  505.     long    Next;
  506.     long    Previous;
  507. };
  508.  
  509. struct    OldMessageType {
  510.     long    ItemNumber;
  511.     long    ResponseNumber;
  512.     long    ByID;
  513.     long    ToID;
  514.  
  515.     struct    IsDate PostDate;
  516.  
  517.     UBYTE    Imported;
  518.     UBYTE    IsFile;
  519. };
  520.  
  521. struct    MessageType3 {
  522.     long    ItemNumber;        /* item serial ID# */
  523.     long    Seek;            /* position in text */
  524.     long    ByID;
  525.     long    ToID;
  526.     long    Number;            /* serial ID# */
  527.  
  528.     struct    IsDate PostDate;
  529.  
  530.     UBYTE    Imported;
  531.     UBYTE    IsFile;
  532. };
  533.  
  534. struct    OldItemType {
  535.     long    Number;
  536.     long    Response1;        /*  1st valid response # */
  537.     long    Responses;        /* last valid response # */
  538.  
  539.     char    Title[72];
  540.     struct    IsDate PostDate;    /* new item ?      */
  541.     struct    IsDate RespDate;    /* new responses ? */
  542.  
  543.     long    ByID;
  544.     long    ToID;
  545.  
  546.     long    Size;
  547.     long    Downloads;
  548.     char    Info[84];
  549.     struct    IsDate UsedDate;    /* new downloads ? */
  550.     short    Part;            /* which partition? */
  551.  
  552.     short    fcredit;    /* Remember the Accounting credits */
  553.     short    bcredit;    /* and File/Byte credits given for */
  554.     UBYTE    fratio;        /* for this item so they can accurately */
  555.     UBYTE    bratio;        /* be removed if un-validated or killed */
  556.  
  557.     UBYTE    Private;
  558.     UBYTE    Killed;
  559.  
  560.     UBYTE    PleaseKill;
  561.     UBYTE    Frozen;
  562.     UBYTE    Free;
  563.     UBYTE    Protected;
  564.  
  565.     UBYTE    Favorite;
  566.     UBYTE    Validated;
  567.     UBYTE    Finished;
  568.     UBYTE    Described;
  569.  
  570.     UBYTE    Transformed;        /* has the script been ran? */
  571.     UBYTE    MissingPost;
  572.     UBYTE    MissingFile;
  573.     BYTE    Integrity;        /* 0 == not tested
  574.                        1 == passed
  575.                       -1 == failed
  576.                        2 == not testable */
  577.  
  578.     short    ByAccount;        /* for AddCredits */
  579.  
  580.     short    order;            /* for New Files Scan */
  581.     short    base;
  582.     UBYTE    WasMoved;
  583.  
  584.     BYTE    expand[57];
  585. };
  586.  
  587. /* size = 34 */
  588.  
  589. struct    ItemHeader {
  590.     long    Number;
  591.     long    Size;            /* ==0-->POST, not file */
  592.     long    Responses;        /* How many responses */
  593.  
  594.     struct    IsDate PostDate;    /* new item ?      */
  595.     struct    IsDate RespDate;    /* new responses ? */
  596.  
  597.     UBYTE    TitleSort[9];
  598.     UBYTE    Killed;
  599. };
  600.  
  601. struct    ItemType3 {
  602.     char    Title[42];        /* 0 */
  603.     short    ByAccount;        /* 42 Uploader's account # */
  604.  
  605.     long    ByID;            /* 44 */
  606.     long    ToID;            /* 48 */
  607.  
  608.     struct    IsDate UsedDate;    /* 52 new downloads ? */
  609.     short    Part;            /* 58 which partition? */
  610.  
  611.     long    Downloads;        /* 60 */
  612.  
  613.     long    ByteCharges;        /* 64 Accounting system charges to the */
  614.     short    FileCharges;        /* 68 uploader ... */
  615.  
  616.     UBYTE    Private;        /* 70 */
  617.     UBYTE    DLnotifyULer;        /* 71 */
  618.  
  619.     UBYTE    PleaseKill_NOT;        /* 72 */
  620.     UBYTE    Frozen;            /* 73 */
  621.     UBYTE    Free;            /* 74 */
  622.     UBYTE    delta;
  623.  
  624.     UBYTE    Favorite;        /* 76 */
  625.     UBYTE    Validated;        /* 77 */
  626.     UBYTE    Finished;        /* 78 */
  627.     UBYTE    Described;        /* 79 */
  628.  
  629.     UBYTE    Transformed;        /* 80 has the script been ran? */
  630.     UBYTE    PurgeKill;        /* 81 delete file when purged? */
  631.     UBYTE    MissingFile;        /* 82 offline? */
  632.     BYTE    Integrity;        /* 83    0 == not tested
  633.                         1 == passed
  634.                            -1 == failed
  635.                         2 == not testable */
  636.  
  637.     UBYTE    AutoGrab;        /* 84 ASCII-Grab when read */
  638.     UBYTE    PurgeStatus;        /* 85   0 == Auto
  639.                         1 == @DL
  640.                         2 == Query@DL
  641.                         3 == @Amaint
  642.                         4 == Protected */
  643.  
  644.     struct    IsDate ShowDate;
  645.  
  646.     UBYTE    nada[7];        /*  86 reserved */
  647.     UBYTE    VirusChecked;        /*  99 */
  648.     UBYTE    override;        /* 100 */
  649.     UBYTE    loaded;            /* 101 is in memory? */
  650.  
  651.     short    FilePayBack;        /* 102 after each download */
  652.     long    BytePayBack;        /* 104 Credits to award the uploader */
  653.  
  654.     long    VoteLink;        /* 108 vote serial# */
  655.     long    SizeTemp;        /* 112 used privately by AT */
  656.  
  657.     long    ByteRewards;        /* 116 # of bytes awarded so far */
  658.     long    FileRewards;        /* 120 # of files awarded so far */
  659.  
  660.     long    ByteDownload;        /* 124 Number of byte cred to download */
  661.     short    FileDownload;        /* 128 Number of file cred to download */
  662.  
  663.     struct    IsDate DLableFrom;    /* 130 */
  664.     struct    IsDate DLableTo;    /* 136 */
  665.     struct    IsDate PurgeOn;        /* 142 */
  666.  
  667.     long    BestCPS;        /* 148 best download rate this file */
  668.  
  669.     long    First;            /* 152 pointer to post in _Text */
  670.     long    Last;            /* 156 pointer to last response in _Text */
  671.  
  672.     long    InfoX;            /* 160 pointer into _Short */
  673.     long    InfoLen;        /* 164 */
  674. };
  675.  
  676. struct FreeType
  677. {
  678.     long    start;
  679.     long    length;
  680.     struct    FreeType *next;
  681. };
  682.  
  683. /* Total length == 332 */
  684.  
  685. struct OldSubboardType {
  686.     char    Title[31];        /* 0  */
  687.     char    SubDirName[21];        /* 31 */
  688.     char    Part0Path [40];        /* 52 */
  689.     long    Parts;            /* 92 partitions 0-31 now allowed */
  690.  
  691.     long    SubOpIDs [6];        /* 96 */
  692.  
  693.     short    MRewardBytes;        /* 120 % of byte  size to award */
  694.     short    NRewardFiles;        /* 122 # of file creds to award
  695.                            uploader each time his file is
  696.                            downloaded */
  697.  
  698.     struct    FreeType *free;        /* 124 */
  699.     long    nf;            /* 128 */
  700.     long    nfmax;            /* 132 */
  701.  
  702.     short    SubOpAccs[6];        /* 136 */
  703.  
  704.     char    Filler[4];        /* 148 shown during SCAN */
  705.  
  706.     short    fdelta;            /* 152 */
  707.     short    fowner;            /* 154 current owner of "free" */
  708.  
  709.     UBYTE    Direct;            /* 156 Disk-exchange type */
  710.     UBYTE    Vote;            /* 157 May non-sysops add topics? */
  711.  
  712.     short    FreeDays;        /* 158 when files are auto-free */
  713.  
  714.     UBYTE    Subdirectory;
  715.     UBYTE    Closed;
  716.  
  717.     long    UnionFlags;        /* 162 Must have all of these flags */
  718.     long    Access;            /* 166 Groups which may ENTER */
  719.     long    PostAccess;        /* 170 Groups which may Post  */
  720.     long    RespondAccess;        /* 174 ... Respond */
  721.     long    UploadAccess;        /* 178 ... Upload */
  722.     long    DownloadAccess;        /* 182 ... Download */
  723.     long    ComputerTypes;        /* 186 */
  724.     long    Hours;            /* 190 restricted entry hours */
  725.     long    HourUnionFlags;        /* 194 */
  726.     long    HourAccess;        /* 198 groups which may Enter during Hours*/
  727.     long    Baud;            /* 202 minimum Baud rate to enter */
  728.     long    BaudHours;        /* 206 hours to enforce min baud rate */
  729.  
  730.     UBYTE    Gender;            /* 210 0 or 'M', 'F' */
  731.     UBYTE    AllowAliases;
  732.     UBYTE    OnlyOnce;        /* 212 */
  733.     UBYTE    Youngest;        /* 213 */
  734.  
  735.     UBYTE    EXTRA;
  736.  
  737.     UBYTE    Oldest;            /* 215 */
  738.  
  739.     struct    IsDate    Sent;        /* 216 FIDO to track new messages */
  740.  
  741.     short    MDownBytes;        /* 222 % of download bytes to subtract */
  742.     short    NDownFiles;        /* 224 # of files to subtract per download */
  743.     short    MTimeCredit;        /* 226 % of time to give back for uploads */
  744.  
  745.     long    MinFreeBytes;    /* 228 to upload in this subboard */
  746.     short    SubSort;    /* 232 */
  747.     short    InactiveDays;    /* 234 */
  748.  
  749.     UBYTE    RealNames;    /* 236 use real names instead of Handles? */
  750.     UBYTE    Addressees;
  751.     UBYTE    Anonymous;
  752.     UBYTE    override;    /* 239 how to set the use defaults flags in
  753.                     newly uploaded items */
  754.  
  755.     UBYTE    Verification;    /* 240 */
  756.     UBYTE    DupCheck;
  757.     UBYTE    ShowUnvalidated;
  758.     UBYTE    NoMCI;
  759.  
  760.     UBYTE    PrivateArea;    /* 244 0/1 No/Yes ... 2==FORCE */
  761.     BYTE    SDownFiles;    /* Which download charge schedules? */
  762.     BYTE    SDownBytes;
  763.     UBYTE    TestImmediate;    /* test at upload time */
  764.  
  765.     UBYTE    TransImmediate;    /* 248 run script at upload time */
  766.     UBYTE    AutoAdopt;    /* Adopt Orphans at a-maint */
  767.     UBYTE    WeedResponses;    /* Use inactive days against indiv responses */
  768.     UBYTE    NoSignatures;
  769.  
  770.     UBYTE    NoReadCharges;    /* 252 opt to short circuit accounting system */
  771.     UBYTE    NoWriteCharges; /* 253 for reading/writing messages */
  772.  
  773.     long    Arcs;        /* 254 which Arcs in BBSARC are allowed uploaded*/
  774.  
  775.     short    UpRatioBytes;    /* 258 which set of file/byte ratios to use? */
  776.     short    UpChargeBytes;    /* 260 which set of charges to use?          */
  777.     short    UpRatioFiles;    /* 262 */
  778.     short    UpChargeFiles;    /* 264 */
  779.  
  780.     UBYTE    Invitation;    /* 266 */
  781.     UBYTE    UserMustJoin;
  782.     UBYTE    DeleteOwn;
  783.     UBYTE    Marker;        /* 0 = Base, 1 = UDBASE, &128 = Killed */
  784.  
  785.     long    Transforms;    /* 270 which BBSARCS to transform */
  786.  
  787.     char    NetPath[20];    /* 274 */
  788.     UBYTE    NetNumber;    /* 294 */ 
  789.     UBYTE    Locked;        /* 295 Does AMAINT have a lock here? */
  790.     UBYTE    DLnotifyULer;    /* 296 */
  791.  
  792.     char    Transform[5];    /* 297 */
  793.  
  794.     UBYTE    QWKReplies;    /* 302 */
  795.     BYTE    SBaseUse;    /* 303  which BBSCHARGE rate to use? */
  796.     UBYTE    CarbonCopy;    /* 304 */
  797.     UBYTE    CDROM;        /* 305 copy to hard drive before download? */
  798.  
  799.     struct    IsDate LastUpload;
  800.     struct    IsDate LastMessage;
  801.  
  802.     short    Users;        /* how many people are in this sub
  803.                    REAL TIME (not # of members) */
  804.  
  805.     long    Created;    /* for membership determination */
  806.  
  807.     short    Parent;        /* pointers to other subboard #s */
  808.     short    Child;
  809.     short    Next;
  810.  
  811.     short    TimeLock;    /* 330 minutes online before available */
  812. };
  813.  
  814. struct NewSubboardType {
  815.     char    Title[31];        /* 0  */
  816.     char    SubDirName[21];        /* 31 */
  817.     char    DataPath  [40];        /* 52 */
  818.     long    Parts;            /* 92 partitions 0-31 now allowed */
  819.  
  820.     long    SubOpIDs [6];        /* 96 */
  821.  
  822.     short    MRewardBytes;        /* 120 % of byte  size to award */
  823.     short    NRewardFiles;        /* 122 # of file creds to award
  824.                            uploader each time his file is
  825.                            downloaded */
  826.  
  827.     struct    FreeType *free0;    /* 124 */
  828.     long    nf_obs;            /* 128 */
  829.     long    nfmax_obs;        /* 132 */
  830.  
  831.     short    SubOpAccs[6];        /* 136 */
  832.  
  833.     char    Filler[6];        /* 148 shown during SCAN */
  834.  
  835.     UBYTE    fdelta;            /* 152 */
  836.     UBYTE    floaded;        /* 154 */
  837.  
  838.     UBYTE    Direct;            /* 156 Disk-exchange type */
  839.     UBYTE    Vote;            /* 157 May non-sysops add topics? */
  840.  
  841.     short    FreeDays;        /* 158 when files are auto-free */
  842.  
  843.     UBYTE    Subdirectory;
  844.     UBYTE    Closed;
  845.  
  846.     long    UnionFlags;        /* 162 Must have all of these flags */
  847.     long    Access;            /* 166 Groups which may ENTER */
  848.     long    PostAccess;        /* 170 Groups which may Post  */
  849.     long    RespondAccess;        /* 174 ... Respond */
  850.     long    UploadAccess;        /* 178 ... Upload */
  851.     long    DownloadAccess;        /* 182 ... Download */
  852.     long    ComputerTypes;        /* 186 */
  853.     long    Hours;            /* 190 restricted entry hours */
  854.     long    HourUnionFlags;        /* 194 */
  855.     long    HourAccess;        /* 198 groups which may Enter during Hours*/
  856.     long    Baud;            /* 202 minimum Baud rate to enter */
  857.     long    BaudHours;        /* 206 hours to enforce min baud rate */
  858.  
  859.     UBYTE    Gender;            /* 210 0 or 'M', 'F' */
  860.     UBYTE    AllowAliases;
  861.     UBYTE    PurgeStatus;        /* 212 */
  862.     UBYTE    Youngest;        /* 213 */
  863.  
  864.     UBYTE    EXTRA;
  865.  
  866.     UBYTE    Oldest;            /* 215 */
  867.  
  868.     struct    IsDate    Sent;        /* 216 FIDO to track new messages */
  869.  
  870.     short    MDownBytes;        /* 222 % of download bytes to subtract */
  871.     short    NDownFiles;        /* 224 # of files to subtract per download */
  872.     short    MTimeCredit;        /* 226 % of time to give back for uploads */
  873.  
  874.     long    MinFreeBytes;    /* 228 to upload in this subboard */
  875.     short    SubSort;    /* 232 */
  876.     short    InactiveDays;    /* 234 */
  877.  
  878.     UBYTE    RealNames;    /* 236 use real names instead of Handles? */
  879.     UBYTE    Addressees;
  880.     UBYTE    Anonymous;
  881.     UBYTE    override;    /* 239 how to set the use defaults flags in
  882.                     newly uploaded items */
  883.  
  884.     UBYTE    Verification;    /* 240 */
  885.     UBYTE    DupCheck;
  886.     UBYTE    ShowUnvalidated;
  887.     UBYTE    NoMCI;
  888.  
  889.     UBYTE    PrivateArea;    /* 244 0/1 No/Yes ... 2==FORCE */
  890.     BYTE    SDownFiles;    /* Which download charge schedules? */
  891.     BYTE    SDownBytes;
  892.     UBYTE    Test;        /* test at upload time */
  893.  
  894.     UBYTE    Transform;    /* 248 run script at upload time */
  895.     UBYTE    AutoAdopt;    /* Adopt Orphans at a-maint */
  896.     UBYTE    WeedResponses;    /* Use inactive days against indiv responses */
  897.     UBYTE    NoSignatures;
  898.  
  899.     UBYTE    NoReadCharges;    /* 252 opt to short circuit accounting system */
  900.     UBYTE    NoWriteCharges; /* 253 for reading/writing messages */
  901.  
  902.     long    Arcs;        /* 254 which Arcs in BBSARC are allowed uploaded*/
  903.  
  904.     short    UpRatioBytes;    /* 258 which set of file/byte ratios to use? */
  905.     short    UpChargeBytes;    /* 260 which set of charges to use?          */
  906.     short    UpRatioFiles;    /* 262 */
  907.     short    UpChargeFiles;    /* 264 */
  908.  
  909.     UBYTE    Invitation;    /* 266 */
  910.     UBYTE    UserMustJoin;
  911.     UBYTE    DeleteOwn;
  912.     UBYTE    Marker;        /* 0 = Base, 1 = UDBASE, &128 = Killed */
  913.  
  914.     long    Transforms;    /* 270 which BBSARCS to transform */
  915.  
  916.     long    ExportTo;    /* 274 */
  917.  
  918.     char    NothingNow[8];    /* 278 */
  919.  
  920.     long    count;        /* 286 replaces the _COUNT file */
  921.     long    hiwater;    /* 290 */
  922.  
  923.     UBYTE    NetNumber;    /* 294 */ 
  924.     UBYTE    Locked;        /* 295 Does AMAINT have a lock here? */
  925.     UBYTE    DLnotifyULer;    /* 296 */
  926.  
  927.     char    TransformTo[5];    /* 297 */
  928.  
  929.     UBYTE    QWKReplies;    /* 302 */
  930.     BYTE    SBaseUse;    /* 303  which BBSCHARGE rate to use? */
  931.     UBYTE    CarbonCopy;    /* 304 */
  932.     UBYTE    CDROM;        /* 305 copy to hard drive before download? */
  933.  
  934.     struct    IsDate LastUpload;
  935.     struct    IsDate LastMessage;
  936.  
  937.     short    Users;        /* how many people are in this sub
  938.                    REAL TIME (not # of members) */
  939.  
  940.     long    Created;    /* for membership determination */
  941.  
  942.     short    Parent;        /* pointers to other subboard #s */
  943.     short    Child;
  944.     short    Next;
  945.  
  946.     short    TimeLock;    /* 330 minutes online before available */
  947.  
  948.     char    ZeroPath[48];    /* 332 */
  949.     char    Origin  [60];    /* 380 */
  950.  
  951. /* if more room is needed, I could put all of this into a pointer to a
  952.    'sub-info' structure */
  953.  
  954.     short    MaxItems;    /* 440 */
  955.     UBYTE    Persist;    /* 442 */
  956.     UBYTE    Delay;        /* 443 */
  957.  
  958.     struct    ItemType3 *Item;
  959.     struct    ItemHeader *ihead;
  960.     struct    MessageType3 *NewMess;
  961.     struct    SignalSemaphore *sem;
  962.  
  963.     long    nm;        /* 460 # of _Messages */
  964.     short    rn;        /* 464 # of _Items */
  965.     short    AllocItems;
  966.     short    nNewMess;
  967.  
  968.     UBYTE    resetIP;    /* 470 */
  969.  
  970.     char    more_stuff[17];    /* 471 */
  971. };
  972.  
  973. /* LONG aligned.  Total length == 348 */
  974.  
  975. struct SerPort {
  976.     long    unit;        /* 0 */
  977.     long    flags;        /* 4 */
  978.  
  979.     short    idlebaud;    /* 8 */
  980.     short    escape;
  981.     short    answerpause;    /* 12 */
  982.     short    seconds;
  983.  
  984.     char    name[21];    /* 16 */
  985.     char    init1[50];    /* 37 */
  986.     char    ppass[11];    /* 87 */
  987.     char    init2[50];    /* 98 */
  988.  
  989.     ULONG    TrapHours;    /* 148 */
  990.     ULONG    MailHours;
  991.  
  992.     UBYTE    extra[3];    /* 156 */
  993.  
  994.     char    hangup[21];    /* 159 */
  995.     char    dialout[21];
  996.     char    answer[21];
  997.     char    offhook[21];
  998.     char    terminal[50];
  999.     char    callerid[11];
  1000.     char    ring[9];
  1001.     char    connect[11];
  1002.  
  1003.     char    termlink[21];    /* 324 */
  1004.  
  1005.     UBYTE    other[2];
  1006.  
  1007.     UBYTE    null;        /* local terminal, no clear line */
  1008. };
  1009.  
  1010. /* LONG aligned.  Total length == 20 */
  1011.  
  1012. struct    PortConfig {
  1013.     UBYTE    online;            /* port loaded or not */
  1014.     UBYTE    open;            /* 1==perm, 2==call only */
  1015.  
  1016.     UBYTE    check;            /* menus */
  1017.     UBYTE    idle;            /* clock, SAG, SAM ? */
  1018.  
  1019.     UBYTE    offline;        /* port loaded, but modem offline */
  1020.     UBYTE    not_used;
  1021.  
  1022.     UBYTE    bplanes;
  1023.     UBYTE    lace;            /* 0=none, 1=24 line, 2=49 line */
  1024.  
  1025.     USHORT    sizes[8];        /* workbench window & zoom size */
  1026. };
  1027.  
  1028. /* LONG aligned.  Total length==92 */
  1029.  
  1030. struct Privs {                /* each user&group has one */
  1031.     long    MBaseFlags;        /* 580 */
  1032.     long    FBaseFlags;        /* 584 Can user reach which subs ? */
  1033.     long    LBaseFlags;        /* 588 Gfiles/Pfiles flags */
  1034.  
  1035.     ULONG    ABits;            /* 592 see bitdefs above */
  1036.  
  1037.     long    DailyDownBytes;        /* 596 */
  1038.     long    DailyUpBytes;        /* 600 */
  1039.     long    XFreeBytes;        /* 604 !!! NOT USED ANYMORE !!! */
  1040.     long    XFreeFiles;        /* 608 SEE GLOBAL DEFAULT IN CONFIG1 */
  1041.  
  1042.     short    Calls;            /* 612 */
  1043.     short    CallMinutes;        /* 614 */
  1044.     short    DailyMinutes;        /* 616 */
  1045.     short    DailyDownloads;        /* 618 per 24 hr DAY */
  1046.     short    DailyUploads;        /* 620 same */
  1047.     short    Messages;        /* 622 */
  1048.     short    Feedbacks;        /* 624 */
  1049.     short    EditorLines;        /* 626 */
  1050.     short    Idle;            /* 628 */
  1051.     short    MaxMailKBytes;        /* 630 before mail-receive is limited */
  1052.     short    PurgeDays;        /* 632 */
  1053.  
  1054.     UBYTE    FileRatio;        /* 634 */
  1055.     UBYTE    ByteRatio;
  1056.     UBYTE    FileRatio2;
  1057.     UBYTE    ByteRatio2;
  1058.     UBYTE    FileRatio3;
  1059.     UBYTE    ByteRatio3;
  1060.  
  1061.     ULONG    ABits2;            /* 640 now gives 64 flags! */
  1062.  
  1063.     short    SigLines;        /* 644 how many lines per signature */
  1064.  
  1065.     UBYTE    AllowAliases;        /* 646 new tri-state variables */
  1066.     UBYTE    DeleteOwn;
  1067.     UBYTE    Anonymous;
  1068.     UBYTE    PrivateArea;
  1069.  
  1070.     short    DailyPfileMinutes;    /* 650 */
  1071.     short    LogToMail;        /* account # to send log */
  1072.  
  1073.     long    LogFlags;        /* 654 */
  1074.  
  1075.     UBYTE    CallBack;        /* 658 Tri-state */
  1076.     UBYTE    TermLink;        /* 659 */
  1077.     UBYTE    CallerID;        /* 660 */
  1078.     UBYTE    PageSysop;        /* 661 */
  1079.  
  1080.     char    exp[ 6 ];        /* 662 */
  1081.  
  1082.     short    Alias;            /* 668 */
  1083.     short    Dictionary;        /* 670 */
  1084. };
  1085.  
  1086. struct AccessGroup {
  1087.     char    Name[32];        /*   0 */
  1088.     struct    Privs DefPrivs;        /*  32 */
  1089.  
  1090.     short    ExpireDays;        /*  32+92 */
  1091.     UBYTE    ExpireAccess;        /*  32+94 */
  1092.  
  1093.     char    exp[29];
  1094. };
  1095.  
  1096. /* FILE: BBS.UKEYS3
  1097.    Alpha "key" for sortable data.  Phone# for caller-id, Handle/RealName
  1098.    for user addressing/mail/logon/etc.
  1099. */
  1100.  
  1101. struct KeyElement3 {
  1102.     char    UUCP[8];
  1103.     long    IDNumber;        /* high order byte ALWAYS 0 */
  1104.     long    phone1, phone2;        /* data phone's area code & local # */
  1105.     char    Handle   [21];
  1106.     char    RealName [26];
  1107.     UBYTE    PName;
  1108. };
  1109.  
  1110. struct OldKeyElement {
  1111.     char    Handle[22];        /* actual user handle */
  1112.     short    HandleX;        /* account number where found */
  1113. };
  1114.  
  1115. struct MarkType {
  1116.     short    sub;            /* The new system can uniquely  */
  1117.     long    ItemNumber;        /* identify a message with this */
  1118.     long    Seek;            /* information.  Used for Z/ZG. */
  1119.     long    Number;
  1120. };
  1121.  
  1122. struct TransType {
  1123.     struct    TransType *next;    /* linked list */
  1124.  
  1125.     long    lines;
  1126.     long    bytes;
  1127.  
  1128.     UBYTE    **mm;            /* pointers to BBSMENU lines */
  1129.     UBYTE    **bm;            /* pointers to BBSTEXT lines */
  1130.     short    menustart[50];        /* */
  1131.     short    menulen  [50];
  1132. };
  1133.  
  1134. struct NoiseType {
  1135.     struct    NoiseType *next;
  1136.  
  1137.     long    lines;
  1138.     long    bytes;
  1139.  
  1140.     char    **nn;
  1141.     char    *args;
  1142. };
  1143.  
  1144. struct MainPort {            /* common, public to all ports */
  1145.     struct    MsgPort mp;        /*   0 standard EXEC message port  */
  1146.     char    portName[22];        /*  34 */
  1147.  
  1148.     char    LastOn[32];        /*  56 */
  1149.  
  1150.     long    Nums[5];        /*  88 [0] # of physical user accounts
  1151.                            [1] # of in-use user accounts
  1152.                            [2] last assigned unique ID Number
  1153.                            [3] # of calls to system TOTAL
  1154.                            [4] # of calls now logged */
  1155.  
  1156.     ULONG    SAG[2][72];        /* 108 activity graph    */
  1157.     long    SAM[5][15];        /* activity monitor  */
  1158.     struct    IsDate SAMDate[6];    /* */
  1159.  
  1160.     long    um[10];            /* for C programmer use.  You can */
  1161.                     /* (typecast) them as you need to. */
  1162.                     /* Initially at bootup == 0 */
  1163.  
  1164.     struct    Window        *PWindow;
  1165.     struct    TransType    *FirstTT;
  1166.     struct    NewSubboardType *Subboard;
  1167.     struct    LinkPort    *link;    /* all-linked port users! */
  1168.     struct    KeyElement3    *Key;    /* alpha order, etc. */
  1169.     short    *IName;            /* Indexs into KeyElement3 array */
  1170.     short    *IPhone;
  1171.     char    *SubTitle;
  1172.     char    **Noise_00;        /* Conference NOISE memory */
  1173.     char    *NArg_00;        /* */
  1174.  
  1175.     long    ns;            /* number of subs in memory */
  1176.  
  1177.     UBYTE    toss_up;
  1178.     UBYTE    server_up[7];
  1179.  
  1180.     long    YankCount;
  1181.     long    OpenPfiles;        /* */
  1182.  
  1183.     struct    NoiseType    *FirstNT;
  1184.  
  1185.     long    ClickMaint;        /* can we use local mouse maint? */
  1186.     long    Verbose;        /* do not redirect to NIL: for debug */
  1187.  
  1188.     long    s1;            /* version of CONTROL */
  1189.     long    s2;
  1190.     long    s3;            /* serial number of owner 0==DEMO */
  1191.  
  1192.     struct    BitMap  ClockBrush;    /* 40 bytes */
  1193.     struct    SignalSemaphore SEM[19];    /* for critical secs. */
  1194.     struct    AccessGroup     AGC[32];    /* BBS.ADATA stuff    */
  1195.  
  1196.     struct    Config1 gc;
  1197.  
  1198.     char    SysPassword[6][21];
  1199.     char    IDQ[6];            /* obs */
  1200.  
  1201.     struct    PortConfig  pc   [101];    /* For CONTROL, remembers things */
  1202.     struct    PortData   *PortZ[100];    /* pointers to each port's PortData struct */
  1203.     struct    Room       *CRoom[100];    /* pointers to ROOM structures  */
  1204.  
  1205.     struct    ULock *FirstULock;    /* Account Locking ... ! */
  1206.     short    LastTickHour;        /* control is ticking ... */
  1207.     short    LastTickMinute;
  1208.  
  1209.     short    HiPort;
  1210.     short    nPorts;
  1211.  
  1212.     char    regto[32], regco[32];
  1213. };
  1214.  
  1215. /* LONG Aligned, total length==672 */
  1216.  
  1217. struct UserData {            /* each user account */
  1218.     long    IDNumber;        /* 0 unique (serial) ID # */
  1219.     char    Handle[21];        /* 4 */
  1220.     char    RealName[26];        /* 25 */
  1221.     char    Address[31];        /* 51 */
  1222.     char    CityState[31];        /* 82 */
  1223.     char    ZipCode[11];        /* 113 */
  1224.     char    Country[8];        /* 124 */
  1225.     char    PhoneNo[17];        /* 132 Euro 8-7 format POSSIBLE!! */
  1226.     char    PassWord[15];        /* 149 */
  1227.     char    Comments[34];        /* 164 */
  1228.     char    Macro[3][36];        /* 198 user's defined macro keys */
  1229.     char    Organ[31];        /* 306 */
  1230.     UBYTE    PhoneVerified;        /* 337 */
  1231.  
  1232.     char    not_used[4];        /* 338 */
  1233.  
  1234.     struct    IsDate Birthdate;    /* 342 */
  1235.     struct    IsDate FirstCall;    /* 348 */
  1236.     struct    IsDate LastCall;    /* 354 */
  1237.  
  1238.     struct    IsDate NO_LONGER_USED;    /* 360 */
  1239.  
  1240.     struct    IsDate ConnectDate;    /* 366 */
  1241.     struct    IsDate YankDate;    /* 372 */
  1242.  
  1243.     BYTE    Access;            /* 378 */
  1244.     BYTE    ExpireAccess;        /* 379 */
  1245.  
  1246.     short    PfileTimeToday;
  1247.  
  1248.     short    not_used2;
  1249.  
  1250.     BYTE    TextSet;        /* 384 which BBSTEXT/MENU translation */
  1251.     BYTE    TimeForm;
  1252.     BYTE    MoreMode;
  1253.     BYTE    LineFeeds;
  1254.     BYTE    ObsParanoia;
  1255.     BYTE    TimeZone;
  1256.     BYTE    Colors;            /* can user display ANSI colors? */
  1257.     BYTE    Tabs;            /* can user do ANSI tabs? */
  1258.     BYTE    ANSI;            /* 392 */
  1259.     BYTE    Sex;
  1260.     BYTE    AutoMore;        /* More? and CLS between messages? */
  1261.     BYTE    TermType;
  1262.     BYTE    HelpLevel;        /* 396 */
  1263.     BYTE    CompType;
  1264.     BYTE    DefProtocol;        /* 398 */
  1265.     BYTE    TermWidth;
  1266.     BYTE    TermLength;        /* 400 */
  1267.     BYTE    MailBoxOpen;        /* 401 */
  1268.     short    MailForward;        /* 402 */
  1269.  
  1270.     long     TotalCalls;        /* 404 */
  1271.     long    PubMessages;        /* 408 */
  1272.     long    PriMessages;        /* 412 */
  1273.     long    UpBytes;        /* 416 KILO bytes */
  1274.     long    UpFiles;        /* 420 */
  1275.     long    DownBytes;        /* 424 KILO bytes */
  1276.     long    DownFiles;        /* 428 */
  1277.  
  1278.     long    FileCredits;        /* 432 CREDITS used now! */
  1279.     long    ByteCredits;        /* 436 */
  1280.     long    TimeCredits;        /* 440 */
  1281.  
  1282.     long    Balance;        /* 444 */
  1283.     long    NetCredits;        /* 448 */
  1284.     long    DoorPoints;        /* 452 */
  1285.  
  1286.     long    DayUpBytes;        /* 456 */
  1287.     long    DayDownBytes;        /* 460 */
  1288.     short    DayUpFiles;        /* 464 */
  1289.     short    DayDownFiles;        /* 466 */
  1290.  
  1291.     short    CallsToday;        /* 468 */
  1292.     short     TimeToday;        /* 470 */
  1293.     short    LogonAttempts;        /* 472 */
  1294.  
  1295.     USHORT    BaudRate;        /* 474 */
  1296.     USHORT    HighBaud;        /* 476 */
  1297.  
  1298.     char    UUCP[11];        /* 478 */
  1299.  
  1300.     UBYTE    PName;            /* 489 flags, are these data     */
  1301.     UBYTE    PAge;            /* items to be kept private? */
  1302.     UBYTE    PAddress;        /* street address only */
  1303.     UBYTE    PVoice;            /* phone numbers */
  1304.     UBYTE    PData;
  1305.  
  1306.     char    Banner[43];        /* 494 */
  1307.  
  1308.     char    VoiceNo[17];        /* 537 Euro 8-7 format POSSIBLE!! */
  1309.  
  1310.     short    YankCount;        /* 554 */
  1311.  
  1312.     struct    IsDate ExpireDate;    /* 556 */
  1313.     struct    IsDate FNewDate;    /* 562 */
  1314.  
  1315.     char    more[7];        /* 568 reserved */
  1316.  
  1317.     UBYTE    YankCR;            /* 575 add CR's to yank text? */
  1318.     UBYTE    YankArc;        /* which archiver to use? */
  1319.     BYTE    DefEditor;        /* 577 */
  1320.     BYTE    AutoHide;
  1321.     BYTE    PrivsSet_NOT;        /* 579 */
  1322.     struct    Privs MyPrivs;        /* 580 THESE ACTUALLY USED, not AGC */
  1323. };
  1324.  
  1325. struct OLMHeader {
  1326.     char    ByUser[26];        /* actual handle only */
  1327.     short    ByAccount;
  1328.     short    Port;
  1329.  
  1330.     UBYTE    system;
  1331.     UBYTE    broadcast;
  1332.  
  1333.     UBYTE    other[22];
  1334. };
  1335.  
  1336. /* length == 296 */
  1337.  
  1338. struct MailHeader {            /* NEW 2.0 for mail, etc */
  1339.     struct    IsDate  Date;
  1340.     struct    IsDate    EDate;        /* for EXPIRATION setting */
  1341.     short    EDays;
  1342.     char    Subject [81];        /* Ahh, nice and roomy */
  1343.     char    From    [27];
  1344.  
  1345.     long    Number;
  1346.  
  1347.     short    ByAccount;
  1348.     long    ByID;
  1349.  
  1350.     char    To    [28];        /* originals, if was Sent/forwarded */
  1351.     long    ToID;
  1352.     short    ToAccount;
  1353.  
  1354.     UBYTE    Receipt;        /* return-receipt ?? */
  1355.     UBYTE    Return;            /* return original message?? */
  1356.  
  1357.     UBYTE    HasOriginal;        /* is original attached to this one? */
  1358.     UBYTE    File;            /* for File Mail */
  1359.     UBYTE    Anonymous;        /* From an anonymous user? */
  1360.  
  1361.     char    Route    [41];        /* for Bulk Mail, list of recips */
  1362.     short    Recipients;        /* number of recipients ... */
  1363.     UBYTE    Party;            /* Allow party responses? */
  1364.  
  1365.     long    Length;
  1366.     long    CheckSum;        /* must be 0 */
  1367.  
  1368.     long    Item;            /* if this message is repeated */
  1369.     long    Seek;            /* somewhere on the system     */
  1370.     short    Base;            /* this tells where !!!        */
  1371.  
  1372.     char    NetAddress[52];        /* may be shortened */
  1373.  
  1374.     UBYTE    Alias;
  1375.     UBYTE    Replied;
  1376.     UBYTE    Received;
  1377.     UBYTE    NoEdits;
  1378.  
  1379.     struct    IsDate  ShowDate;
  1380. };
  1381.  
  1382. /* LONG aligned.  Length==172 */
  1383.  
  1384. struct Subdirectory {
  1385.     long    SubOpIDs [10];
  1386.     short    SubOpAccs[10];
  1387.  
  1388.     long    Access;
  1389.     long    UnionFlags;
  1390.  
  1391.     long    Hours;
  1392.     long    HourUnionFlags;
  1393.     long    HourAccess;
  1394.  
  1395.     long    Baud;
  1396.     long    BaudHours;
  1397.  
  1398.     short    Youngest;
  1399.     short    Oldest;
  1400.  
  1401. /* when the Download command is used on a Gfile */
  1402.  
  1403.     short    NDownFiles;    /* # of download files to subtract */
  1404.     BYTE    SDownFiles;    /* Which download charge schedules? */
  1405.     BYTE    SDownBytes;
  1406.  
  1407. /* per-usage charge schedules from BBSCHARGESX.A files */
  1408.  
  1409.     long    unused;
  1410.  
  1411.     UBYTE    Gender;        /* 0 or 1, 2 */
  1412.     UBYTE    SBaseUse;    /* accounting schedule for this area */
  1413.     UBYTE    Closed;
  1414.  
  1415.     UBYTE    exp[61];
  1416.  
  1417.     long    ComputerTypes;
  1418.  
  1419.     short    TimeLock;    /* minutes online before available */
  1420.     short    MDownBytes;    /* % of download Bytes to subtract */
  1421. };
  1422.  
  1423. struct ListItem {
  1424.     short    Version;        /* should be 225 */
  1425.     char    Path       [54];    /*   2 */
  1426.     char    Description[64];    /*  56 */
  1427.     char    Arguments  [64];    /* 120 */
  1428.  
  1429.     long    Access;            /* 184 */
  1430.     long    UnionFlags;        /* 188 */
  1431.  
  1432.     struct    IsDate Date;        /* 192 */
  1433.  
  1434.     short    SCharge;        /* 198 accounting use-of-item charge */
  1435.  
  1436.     UBYTE    Subdirectory;        /* 200 */
  1437.     UBYTE    FifoFlags;        /* 201 1==RAW startup */
  1438.     UBYTE    ReadFlags;        /* internal only */
  1439.     UBYTE    Environ;
  1440.  
  1441.     UBYTE    DailyPfileTime;        /* 204 subtract from daily pfile time? */
  1442.     UBYTE    Disabled;        /* 205 */
  1443.     UBYTE    Type;            /* 206 not really used yet */
  1444.     UBYTE    PurgeKill;        /* 207 Delete item when purged? */
  1445.  
  1446.     UBYTE    Expansion[14];        /* 208 */
  1447.  
  1448.     struct    IsDate PurgeDate;    /* 222 */
  1449. };
  1450.  
  1451. /* Length== 176 */
  1452.  
  1453. struct OldListItem {
  1454.     char    Path       [51];    /* 0 */
  1455.     char    Description[61];    /* 51 */
  1456.     char    Arguments  [20];
  1457.  
  1458.     struct    IsDate Date;        /* 132 */
  1459.  
  1460.     long    Access;            /* 138 un-al */
  1461.  
  1462.     UBYTE    Subdirectory;        /* 142 */
  1463.     UBYTE    DaysToKeep;
  1464.     UBYTE    ReadFlags;        /* internal only */
  1465.     UBYTE    Environ;
  1466.  
  1467.     short    SCharge;        /* 146 override a subdir schedule */
  1468.  
  1469.     long    UnionFlags;
  1470.  
  1471.     UBYTE    DailyPfileTime;        /* subtract from daily pfile time? */
  1472.  
  1473.     UBYTE    Expansion[23];        /* 148 */
  1474. };
  1475.  
  1476. /* LONG aligned.  Length==48 */
  1477.  
  1478. struct CPort {                /* setup when a C pfile is ran */
  1479.     struct    MsgPort  mport;        /* 0 */
  1480.     short    align;
  1481.     struct    MainPort *myp;        /* 36 pointer to MainPort */
  1482.     struct    PortData *zp;        /* 40 pointer to my PortData */
  1483.  
  1484.     UBYTE    ack;            /* 44 tell CNet we've arrived */
  1485.     UBYTE    align2[3];
  1486. };
  1487.  
  1488. struct CMessage {            /* passed between C pfile and C-Net */
  1489.     struct    Message cn_Message;    /* 0 communication stuff */
  1490.     ULONG    arg1;            /* 20 */
  1491.     ULONG    arg2;
  1492.     ULONG    arg3;
  1493.     ULONG    arg4;
  1494.     ULONG    result;
  1495.     UBYTE    command;        /* 40 which command? see programming doc */
  1496.     UBYTE    align[3];
  1497. };
  1498.  
  1499. struct Event {
  1500.     long    Start;
  1501.     long    End;
  1502.  
  1503.     short    Event;
  1504.     char    Args[82];
  1505.     long    IntArgs;
  1506.  
  1507.     struct    Event *Next;
  1508. };
  1509.  
  1510. struct ConfigEvent {
  1511.     char    Ports[40];
  1512.  
  1513.     UBYTE    Days;        /* if this is 0, use Date */
  1514.     char    Date[7];
  1515.  
  1516.     short    Time,
  1517.         Duration,
  1518.         Interval,
  1519.         Iterations;
  1520.  
  1521.     short    Event;
  1522.     char    Args[81];
  1523.  
  1524.     UBYTE    Type;
  1525. };
  1526.  
  1527. /* all LONG's 4 byte aligned */
  1528.  
  1529. struct PortData {            /* each opened ports global vars */
  1530.     struct    IsDate    Today;        /* 0 what time is it right now? */
  1531.     struct    IsDate    VConnectDate;    /* 6 Virtual connect...eg 12am */
  1532.  
  1533.     short    id,            /* 12 current user1 account # */
  1534.         InPort,            /* 14 which port are we in??  */
  1535.         Age,            /* 16 how old am I ? */
  1536.         CurrentCPS,        /* 18 CPS rate.  240 == 2400 baud */
  1537.         OnType,            /* 20 type of logon  */
  1538.         OffType,        /* 22 */
  1539.         CallMessages,        /* 24 */
  1540.         CallFeedbacks,        /* 26 */
  1541.         TimeLeft,        /* 28 TENTHS of minutes left */
  1542.         TimeIdle,        /* 30 TENTHS of minutes without activity */
  1543.         TimeOnLine,        /* 32 TENTHS of minutes since logon */
  1544.         TimeCredit,        /* 34 TENTHS awarded for uploads, etc */
  1545.         LastTSR,        /* 36 */
  1546.         Carrier;        /* 38 Is there a carrier or Local? */
  1547.  
  1548.     char    *AName;            /* 40 ptr to access group name */
  1549.     long    SysMaint,        /* 44 */
  1550.         LocalTime,        /* 48 current area sur-time minutes */
  1551.         LocalCharge,        /* 52 current area sur-charge per minute */
  1552.         LastTime,        /* 56 */
  1553.         ServLen,        /* 60 seconds in-between Service() calls */
  1554.         Caller;            /* 64 which caller am I? */
  1555.  
  1556.     struct    UserData    user1,    /* 68 */
  1557.                 user2;    /* 740 actual user structs */
  1558.  
  1559.     short    MyMail;            /* 1412 counters for user currently online */
  1560.     short    MyNewMail;        /* 1414 */
  1561.     short    bn;            /* 1416 current sub # */
  1562.  
  1563.     char    CallerID [18];        /* 1418 Received from Supra, prev connect */
  1564.     short    CIDmatch [ 8];        /* Accounts which MATCH, [0] will be current user  */
  1565.  
  1566.     UBYTE    expansion[18];        /* 1436 */
  1567.  
  1568.     UBYTE    PAccess,        /* 1470 */
  1569.         RAccess,
  1570.         DAccess,
  1571.         UAccess;
  1572.  
  1573.     char    fsuff[8],        /* 1474 more header stuff */
  1574.         fcore[32],        /* 1482 */
  1575.         Title[80],        /* 1514 Screen/Window */
  1576.         lastby[36];        /* 1594 */
  1577.  
  1578.     UBYTE    IUCBits[100];        /* 1630 Hidden, Muffled, Monitor, ChatReq */
  1579.  
  1580.     char    *MyDoing;        /* 1730 */
  1581.     struct    Room *CRoom;        /* 1734 which room am I in ? */
  1582.     struct    RoomUser *CUser;    /* 1738 where is my RoomUser struct */
  1583.  
  1584.     UBYTE    Dumped,            /* 1742 auto-kickoff flag    */
  1585.         OLMWaiting,        /* 1743 OLM waiting        */
  1586.         HideAll,        /* 1744 Hidden from ALL?    */
  1587.         MuffAll,        /* 1745  Muffling ALL?    */
  1588.         MonitorAll,        /* 1746 Monitoring ALL?    */
  1589.         OnLine,            /* 1747 */
  1590.         nPdepth,        /* 1748 How many pfiles a port is running */
  1591.         ChatCode,        /* 1749 who's chatting with whom */
  1592.         WantToOpen,        /* 1750 */
  1593.         getout,            /* 1751 flag to auto-quit port */
  1594.         loaded,            /* 1752 Is this port loaded? */
  1595.         other[3];        /* 1753 */
  1596.  
  1597.     long    LastEvent,        /* 1756 keep track of the last event */
  1598.         LastCut,        /* 1760 time in these 4 catagories */
  1599.         LastHold,        /* 1764 */
  1600.         LastOnLine;        /* 1768 */
  1601.  
  1602.     long    TempSysMaint;
  1603.     short    ConfIdle;
  1604.  
  1605.     UBYTE    expansion2[16];        /* 1772 */
  1606.  
  1607.     ULONG    DOIO_MASK;         /* 1794 */
  1608.     struct    IOStdReq     *DoReq;     /* 1798 */
  1609.     struct    MsgPort        *DoPort; /* 1802 */
  1610.  
  1611.     long    uz[10];            /* 1806 for C programmer use.  You can */
  1612.                     /* (typecast) them as you need to */
  1613.  
  1614.     struct    Task        *ThisTask;
  1615.     struct    MainPort    *cnp;
  1616.  
  1617.     struct    Window        *Window, *CWindow, *SWindow, *TWindow,
  1618.                 *TTWindow, *WBWindow;
  1619.     struct    Screen        *Screen;
  1620.     struct    RastPort    *wrp, *trp;
  1621.     struct    TextFont    *BlueFont,
  1622.                 *StandardFont;
  1623.     struct    IOStdReq     *UTReq, *ServReq, *PrintReq, *ConReq;
  1624.     struct    IOExtSer    *SerRdReq, *SerWrReq, *SerIOReq;
  1625.     struct    MsgPort        *SerRdPort,*SerWrPort,*SerIOPort, *ConPort,
  1626.                 *UTPort,   *ServPort, *PrintPort, *cpreplyp;
  1627.  
  1628.     struct    FileInfoBlock    *fib;    /* for reading directories */
  1629.     struct    InfoData    *IData;    /* for getting free disk space, etc */
  1630.     struct    ItemType3       *Item_obs;
  1631.     struct    MessageType3    *Message;
  1632.     struct    BaseUser    *buser;
  1633.     struct    SelectType      *Select;
  1634.     struct    BaseUser    *brec;
  1635.     struct    SelectType    *Upload;
  1636.     struct    ListItem        *fpt;
  1637.     struct    ItemHeader    **ih, *ihead_obs;
  1638.     struct    ItemType3    **ip;
  1639.     char    **EdBuffer;        /* pointers to editor lines.*/
  1640.     char    *EdBase;        /* pointer to editor memory */
  1641.     UBYTE    *CR;            /* Is there a Carriage Return? ea line*/
  1642.     char    **mm;            /* pointers to bbsmenu lines */
  1643.     char    **bm;            /* pointers to bbstext lines */
  1644.     short    *menustart;
  1645.     short    *menulen;
  1646.  
  1647.     long    plsize, nplanes;    /* SkyStuff Stuff */
  1648.     short    skyxpen, skyypen;
  1649.     PLANEPTR planePtr;
  1650.     struct    TmpRas        tmpRas;
  1651.     struct    BitMap      SkyBrush;
  1652.  
  1653.     long    FullMaint;
  1654.  
  1655.     long    numWE;            /* window-edit, current number */
  1656.     long    WWidth;        /* 80 */
  1657.     long    WLength;    /* 24 */
  1658.     long    WLeft;        /* def   0 */
  1659.     long    WRight;        /* def 639 */
  1660.     long    WTop;        /* def  11 */
  1661.     long    WBottom;    /* def YMAX */
  1662.  
  1663.     short    xc,            /* x coord, cursor pos */
  1664.         yc,            /* y coord */
  1665.         sxc,            /* storage for ANSI [s, [t */
  1666.         syc,
  1667.         YMAX,            /* max y value */
  1668.         CurrentMouseX,
  1669.         CurrentMouseY,
  1670.         countWE;        /* window-edit, # characters */
  1671.  
  1672.     short    IsHalfScreen;
  1673.     short    TermLength;
  1674.  
  1675.     short    SWidth;
  1676.     short    SHeight;
  1677.     short    DWidth;
  1678.     UBYTE    io_bad;
  1679.     UBYTE    io_status;        /* debugging Supra hangs */
  1680.  
  1681.     char    *by0,            /* scan and header variables */
  1682.         *by1,            /* for MCI configurability */
  1683.         *to0,
  1684.         *to1,
  1685.         *date0,
  1686.         *organ,
  1687.  
  1688.         plus[2],
  1689.         star[2],
  1690.         fdate[8],
  1691.         fsize[8],
  1692.         ftime[12],
  1693.         *title0,
  1694.         *olm_default,
  1695.         *vis_subj,
  1696.         *vis_to,
  1697.         *user_default,
  1698.         *subj_default;
  1699.  
  1700.     short    Depth;
  1701.     short    DHeight;
  1702.  
  1703.     short    TextSet;        /* 0==use system-wide text/menu */
  1704.     short    npitems;        /* number of items parsed */
  1705.     char    pitem[8][61];        /* last input parsed list */
  1706.  
  1707.     long    txline;            /* number of lines in ed buffer */
  1708.     char    GBuffer[16][81];    /* General purpose 2-D text buffer */
  1709.     UBYTE    GCR[16];
  1710.  
  1711.     ULONG    WaitFlags,
  1712.         SERVICE_MASK,
  1713.         RAWKEY_MASK;
  1714.  
  1715.     short    ACC[80],        /* accounting table currently in use */
  1716.         nowCharge;        /* schedule now in memory            */
  1717.  
  1718.     long    CTC[80];        /* users account, 62 items, Cost of This Call */
  1719.  
  1720.     short    sorder[240];        /* max subboards per subdir is 240 */
  1721.  
  1722.     char    *LastError;        /* for file transfer WHY command */
  1723.  
  1724.     char    RexxObject  [100],
  1725.         KBuff       [256],    /* keyboard buffer! */
  1726.         ABuffer     [256],    /* workspace */
  1727.         InBuffer    [256],    /* after a line input */
  1728.         FileNote    [364],
  1729.         Doing         [48],
  1730.         SPrompt     [128],    /* subboard prompt */
  1731.         LPrompt     [128],    /* G/P/N list prompt */
  1732.         diskloc_obs  [80],
  1733.         ldiskloc     [80],    /* diskloc for P/G/N */
  1734.         myloc        [80],
  1735.         LastSubject_obs  [84],    /* for Read-Mail */
  1736.         filename    [116],
  1737.         ListArea     [40],
  1738.         rsearch      [64],
  1739.         myfile       [54],
  1740.         dirname      [32],
  1741.         CStack       [80],    /* Command stacking */
  1742.         ChatMsg      [84],    /* current chat message */
  1743.         sbuff        [48],
  1744.         outbuffer    [84],
  1745.         ansiout      [164],
  1746.         ConnectCode  [84],
  1747.         ChatBuff     [84],
  1748.         APrint       [36],    /* for PrintAccess */
  1749.         PName     [3][32],
  1750.         home         [36],
  1751.         qwk_to       [28],
  1752.         qwk_subject  [28],
  1753.         BackBuff [10][80],    /* last 10 commands executed */
  1754.         Pathx     [8][64];    /* g/p/n subdir history */
  1755.  
  1756.     long    bbnum;            /* pointer into D-Q */
  1757.  
  1758.     long    warn1;
  1759.  
  1760.     long    TotalCTC;        /* TOTAL Cost of this Call (100ths)*/
  1761.  
  1762.     short    bz,        /* # of subs on current List */
  1763.         dz,        /* how deep in the tree are we? */
  1764.         br,        /* item last used */
  1765.         rn_NOT,        /* how many items, current list */
  1766.  
  1767.         nl,        /* number on g/p/n list */
  1768.         allin_NOT,    /* Are all items in memory? */
  1769.         VTimeOnLine,    /* may reset at midnight */
  1770.         PTimeOnLine,    /* in-current-pfile time counter */
  1771.  
  1772.         mx,        /* highest item NOT killed */
  1773.         listn,        /* current list subboard pointer */
  1774.         parent0,
  1775.         gpos,        /* for global commands, last command # */
  1776.  
  1777.         nsubs,        /* tracks # subs accessed in a Global cmd */
  1778.         LinkPort;
  1779.  
  1780.     long    TermLinkBaud;
  1781.  
  1782.     long    nm_NOT,        /* were once SHORTS...moved here to*/
  1783.         rs,        /* avoid conflicts with 32767 max  */
  1784.         cpos,
  1785.         mstart,
  1786.         mend,
  1787.         new_i,        /* responses/item or per subboard  */
  1788.         new_n,
  1789.         new_f,
  1790.         new_p,
  1791.         new_ri,
  1792.         t_new_i,    /* total new items */
  1793.         t_new_n,    /* total new messages to you */
  1794.         t_new_f,    /* total new files */
  1795.         t_new_p,    /* total new posts */
  1796.         t_new_ri;    /* total new response items */
  1797.  
  1798.     USHORT    AParams,
  1799.         AParam[17];
  1800.  
  1801.     UBYTE    qwk;
  1802.     UBYTE    ylharc;
  1803.     UBYTE    yaddcr;
  1804.     UBYTE    ylocal;
  1805.  
  1806.     short    zmatches;
  1807.     UBYTE    zheader;
  1808.     UBYTE    readnew;
  1809.  
  1810.     long    nsets,
  1811.         rset,
  1812.         rcount,
  1813.         rtotal,
  1814.         set[10][2];
  1815.  
  1816.     UBYTE    runseen,
  1817.         resetIP,        /* flag, must re-order item pointers */
  1818.         atbase,
  1819.         TermLink,
  1820.  
  1821.         rtome,
  1822.         rfree,
  1823.         rfavorite,
  1824.         runval,
  1825.  
  1826.         rprivate,
  1827.         rreverse,
  1828.         rbrandnew,
  1829.         rnresponse,
  1830.  
  1831.         rpass,
  1832.         rsince,
  1833.         rnew,
  1834.         rglobal,
  1835.  
  1836.         rdeftype,
  1837.         rchron,
  1838.         rbyme,
  1839.         runtil,
  1840.  
  1841.         rjustposts,
  1842.         rpreview,
  1843.         rbanner,
  1844.         rjustfiles;
  1845.  
  1846.     struct    IsDate    rdate,
  1847.             udate;
  1848.  
  1849.     short    pos,
  1850.         num,
  1851.  
  1852.         rdelta,        /* for/back n items */
  1853.  
  1854.         NoSelected,    /* number of items in Select List */
  1855.         NoUploaded,
  1856.         ModelType;        /* Controls .M in editor.  */
  1857.  
  1858.     struct    RangeContext EdRange;
  1859.  
  1860.     long    tline, bit_mci;
  1861.     short    times, repmode, MaxLines, WScroll;
  1862.  
  1863.     long    warn2;
  1864.  
  1865.     char    keyin,
  1866.         edall_not,        /* allow enterline all chars */
  1867.         serbuffer[2];
  1868.  
  1869.     UBYTE    mode,
  1870.         ZAlternate,
  1871.         CheckAllEvents,        /* force check of TimeTilEvent's */
  1872.         TrapDoor,
  1873.  
  1874.         AtPrompt,
  1875.         InShell,
  1876.         donormal,
  1877.         dtr,        /* modem device OPENED and ready */
  1878.  
  1879.         sread,        /* read request pending ... */
  1880.         modem,        /* modem exists ... allows BBSPORT0 */
  1881.         mio,        /* modem IO allowed */
  1882.         isud,        /* when in base, is UD, not BASE */
  1883.  
  1884.         MaxColors,        /* # of colors on screen */
  1885.         FlagCH,
  1886.         FlagED,
  1887.         Gflag,
  1888.  
  1889.         ConfMode,        /* Are we in conference? */
  1890.         column,
  1891.         KB1,            /* DeQueue pointers */
  1892.         KB2,
  1893.  
  1894.         KB3,            /* what inter-user chat sees */
  1895.         CursorStatus,        /* is cursor on? */
  1896.         AbortFlags,
  1897.         HourNow,
  1898.  
  1899.         LastHour,
  1900.         Indent,
  1901.         InANSI,
  1902.         GETarg,
  1903.  
  1904.         CMDarg,
  1905.         LocalMode,        /* BOOLS .. In Local Mode ? */
  1906.         noflowcontrol,
  1907.         AtWaitScreen,        /* Are we at IDLE? */
  1908.  
  1909.         InMCI,
  1910.         DoQuick,        /* ! at last input ? */
  1911.         AutoLogon,
  1912.         TermOn,            /* in terminal? */
  1913.  
  1914.         ANSIon,            /* can we type ansi? (ESC) */
  1915.         PrintFlags,        /* space or ^C pressed */
  1916.         CountUp,
  1917.         InputFlags,
  1918.  
  1919.         Relogon,
  1920.         Logoff,
  1921.         NewScanBROWSE,        /* BROWSE at logon scan for new? */
  1922.         AutoScroll,
  1923.  
  1924.         WWrap,
  1925.         DoubleBuffer,
  1926.         MoreRow,
  1927.         MoreAtRow,
  1928.  
  1929.         WScreen,
  1930.         InTransfer,
  1931.         NoMCI,
  1932.         FreezeTime,
  1933.  
  1934.         kolorific,
  1935.         mciflash,        /* actually, bold */
  1936.         mciscore,
  1937.         mcireverse,
  1938.  
  1939.         intense,        /* color greater than 7? */
  1940.         mciprint,
  1941.         mcispeed,
  1942.         mcicolor,        /* the requested MCI color 0-7 */
  1943.  
  1944.         pencolor,        /* actual screen pencolor */
  1945.         mcinoabort,
  1946.         backcolor,        /* background color */
  1947.         mciback,
  1948.  
  1949.         MCIenv,            /* current MCI environ flags */
  1950.         MCIdefenv,
  1951.         MRinuse,
  1952.         OffLine,        /* skip answering the phone?? */
  1953.  
  1954.         cminute, 
  1955.         chour,
  1956.         FNewSave,        /* flag: update FNewDate at logoff */
  1957.         intab;            /* for LoadLine() */
  1958.  
  1959.     char    mcitest,        /* MCI stuff */
  1960.         EditorOn,        /* is editor on? */
  1961.         var5,
  1962.         ScreenWidth;
  1963.  
  1964.     long    warn3;
  1965.  
  1966.     long    swrite, LogoffFlag;    /* file transfer stuff */
  1967.     long    ResumeSize;
  1968.     short    ResumeNumber, StartUpTime;
  1969.  
  1970.     short    protonum;
  1971.     char    protobyte;
  1972.     char    edbuff;            /*  1 saved new text
  1973.                         0 saved empty buffer
  1974.                        -1 aborted
  1975.                     */
  1976.  
  1977. /* If you use QuoteType=2, you MUST set the following three variables.
  1978.    Note that QuoteFrom and QuoteDate are POINTERS ... do NOT copy into
  1979.    them!
  1980. */
  1981.     char    *QuoteFrom;        /* Who are we quoting? */
  1982.     struct    IsDate *QuoteDate;    /* When was that message written? */
  1983.     long    QuoteEnd;        /* LAST BYTE position in file */
  1984.                     /* Quoter will stop automatically
  1985.                        if ^Z occurs first */
  1986.     UBYTE    qwk_anonymous;
  1987.     UBYTE    qwk_private;
  1988.     short    xfercount;
  1989.  
  1990.     long    XferTime;
  1991.     long    LastCPS, cpsavecount;
  1992.     long    cpsavesum, LastXTime, StartByte, LastByte;
  1993.  
  1994.     short    ARunCount;        /* depth of AREXX pfiles */
  1995.     short    CRunCount;        /* depth of C pfiles */
  1996.     char    CSpawn[84];
  1997.  
  1998.     long    TrapBaud;
  1999.     long    TrapLock;
  2000.  
  2001.     UBYTE    QuoteType;        /* 0==Mail, 1==Message base
  2002.                        2==User defined.  See QuoteFrom,
  2003.                           QuoteDate, etc., above */
  2004.     char    QuotePath[103];        /* MESSAGE QUOTING in editor. */
  2005.                     /* SETTING this ENABLES quoting.
  2006.                        Remember to QuotePath[0] = 0 after
  2007.                        you use it. */
  2008.     long    QuoteSeek;        /* What's the starting byte pos? */
  2009.  
  2010.     short    imode;        /* editor.  Insert mode?  If yes, which line*/
  2011.     short    iline;
  2012.  
  2013.     long    abort;
  2014.  
  2015.     short    UrgentMail1;
  2016.     char    ExtTransfer;
  2017.     char    ExtProtocol;
  2018.  
  2019.     long    ExtMinFree;
  2020.  
  2021.     long    ALogon;
  2022.     long    BLogon;
  2023.     long    ATransfer;
  2024.     long    BDownload;
  2025.     long    BUpload;
  2026.     long    APfiles;
  2027.     long    BCharge;
  2028.     long    hiCharge;
  2029.     long    loCharge;
  2030.  
  2031.     long    rtoid;            /* to 'handle' searches */
  2032.  
  2033.     long    TimeTilOnLine,
  2034.         TimeTilCutoff,        /* Log user off first event */
  2035.         TimeTilEvent,        /* Immediate (regular) event */
  2036.         TimeTilHold;        /* hold until off-line event */
  2037.  
  2038.     long    SERIAL_MASK,
  2039.         UTILITY_MASK;
  2040.  
  2041.     char    *xpr_filename;
  2042.  
  2043.  
  2044.     UBYTE    xpr_obsolete[124];
  2045.  
  2046.  
  2047.     struct    MsgPort *rexxPort;
  2048.     long    rexxPortBit;
  2049.     char    *extension;
  2050.     struct    rexxCommandList *globalrcl;
  2051.  
  2052.     UBYTE    callback,        /* enable AUTOCALLBACK @ LOGON */
  2053.         avalid,            /* which avalid set to use */
  2054.         joinlink,        /* 0==off, 1==accept, 2==accept ONLY */
  2055.         FreezeIdle;        /* special use -- stop idle timer */
  2056.  
  2057.     long    rbyid;            /* by 'handle' searches */
  2058.  
  2059.     long    SAMNow[20];        /* users 'Last' SAM column */
  2060.  
  2061.     struct    CMessage    cpmess;
  2062.     struct    SerPort        sp;    /* BBSPORT data. see above struct */
  2063.     struct    BaseUser    xbrec;
  2064.     struct    ItemType3    Item0;
  2065.     struct    ItemHeader    ihead0;
  2066.     struct    HeaderType    Header0, LastHeader;
  2067.     struct    MailHeader    Mail0;
  2068.     struct    SelectType    Select0;
  2069.     struct    MessageType3    Message0;
  2070.     struct    Subdirectory    sub;
  2071.  
  2072.     struct    NewSubboardType *sb;
  2073.  
  2074.     char    rpattok[202];        /* tokenized search pattern */
  2075.  
  2076.     UBYTE    Subboard0_NOT [276];
  2077.  
  2078.     short    WBorTop;
  2079.     short    nupload;        /* # of upload allocated    */
  2080.     short    nips;            /* # of ip,ih now allocated */
  2081.  
  2082.     short    Monitored;        /* 128 + port number if monitored. */
  2083.     short    ModelEnable;        /* Controls .M in editor.  */
  2084.  
  2085.     BPTR    MCIfile;
  2086.     long    mcilabel;
  2087.     long    nlabels;
  2088.     long    mlabel[20];
  2089.     long    mfseek[20];
  2090.     long    MCInreg[10];
  2091.     char    MCIcreg[ 5][100];
  2092.  
  2093.     BPTR    sf;            /* for _short scan */
  2094.     long    sfin;
  2095.  
  2096.     long    VoteItem;        /* which vote? -1==New */
  2097.     char    *VotePath;        /* for Vote in Any Area! */
  2098.  
  2099.     UBYTE    q_kolorific,        /* MCI Q2/Q3 storage */
  2100.         q_mciflash,
  2101.         q_mciscore,
  2102.         q_mcireverse,
  2103.  
  2104.         q_intense,
  2105.         q_mciprint,
  2106.         q_mcispeed,
  2107.         q_mcicolor,
  2108.  
  2109.         q_mciback,
  2110.         q_mcinoabort,
  2111.         q_MCIenv;
  2112.  
  2113.     UBYTE    SelectInMemory;        /* is _select in memory or on disk? */
  2114.  
  2115.     struct    Event    *FirstEvent,
  2116.             *FirstCutEvent,
  2117.             *FirstHoldEvent,
  2118.             *FirstOnLineEvent;
  2119.  
  2120.     struct    TermLink tl;
  2121.  
  2122.     char    JoinLinkOut[76];
  2123.  
  2124.     struct    VDEentry *vv;        /* the currently loaded VDE file */
  2125.     short    vns;            /* used with VDEapply featuers!  */
  2126.     UBYTE    vmulti;            /* editing more than one?        */
  2127.     UBYTE    iselect;        /* is the input SELECTED?        */
  2128.  
  2129.     char    gmFile[40];        /* global Read-Mail variables... */
  2130.     long    *gmPos;            /* needed for Yank command ....  */
  2131.     UBYTE    *gmFlags;
  2132.  
  2133.     UBYTE    *amem;            /* DrawEd variables */
  2134.     UBYTE    *cmem;
  2135.     long    maxdraw;
  2136.  
  2137.     UBYTE    predraw;
  2138.     UBYTE    GiveCPR;        /* CPR request received in term */
  2139.     UBYTE    hmmmm[2];
  2140.  
  2141.     UBYTE    *smem;
  2142.  
  2143.     long    inlen, edlength;
  2144. };
  2145.  
  2146. #define HIDDEN_FLAG    0x01
  2147. #define MUFFLED_FLAG    0x02
  2148. #define MONITOR_FLAG    0x04
  2149. #define CHATREQ_FLAG    0x08
  2150.  
  2151. struct ULock {                /* account locking node!!! */
  2152.     short    Account;
  2153.     short    Wait;
  2154.  
  2155.     struct    SignalSemaphore Sem;
  2156.  
  2157.     struct    ULock *Next;
  2158. };
  2159.  
  2160. struct FidoNet {
  2161.     char from[36];
  2162.     char to  [36];
  2163.     char subject [72];
  2164.     char dateline[20];
  2165.     USHORT time;
  2166.     USHORT destnode;
  2167.     USHORT orignode;
  2168.     USHORT cost;
  2169.     USHORT orignet;
  2170.     USHORT destnet;
  2171.     USHORT destzone;
  2172.     USHORT orignzone;
  2173.     USHORT destpoint;
  2174.     USHORT orignpoint;
  2175.     USHORT replyto;
  2176.     USHORT attribute;
  2177.     USHORT nextrply;
  2178. };
  2179.  
  2180. struct PacketHeader {
  2181.     USHORT    orignode;
  2182.     USHORT    destnode;
  2183.     USHORT    year;
  2184.     USHORT    month;
  2185.     USHORT    day;
  2186.     USHORT    hour;
  2187.     USHORT    minute;
  2188.     USHORT    second;
  2189.     USHORT    baud;
  2190.     USHORT    two_oh;
  2191.     USHORT    orignet;
  2192.     USHORT    destnet;
  2193.     char    fill[34];
  2194. };
  2195.  
  2196. struct PackedMessage {
  2197.     USHORT    two_oh;
  2198.     USHORT    orignode;
  2199.     USHORT    destnode;
  2200.     USHORT    orignet;
  2201.     USHORT    destnet;
  2202.     USHORT    attribute;
  2203.     USHORT    cost;
  2204.     char    date[20];
  2205. };
  2206.  
  2207. struct NodeType {        /* a node that we export-to */
  2208.     char    *buffer;
  2209.     ULONG    buffpos;
  2210.     ULONG    buffsize;
  2211.  
  2212.     USHORT    zone;
  2213.     USHORT    net;
  2214.     USHORT    node;
  2215.     USHORT    point;
  2216.  
  2217.     USHORT    packer;
  2218.     USHORT    format;        /* 4d or 2d */
  2219.     USHORT    type;        /* normal, crash, hold */
  2220.  
  2221.     USHORT    flag;        /* 0-31 ... which subboards? */
  2222.     USHORT    domain;        /* which fido-net domain? */
  2223.  
  2224.     UBYTE    Access;
  2225.     UBYTE    Flags;
  2226.  
  2227.     USHORT    more[4];
  2228.  
  2229.     ULONG    incount;
  2230.     ULONG    outcount;
  2231.  
  2232.     char    Password[12];
  2233. };
  2234.  
  2235. struct RouteType {        /* a netmail routing pattern */
  2236.     USHORT    zone;        /* from ... -1's mean wildcard ... */
  2237.     USHORT    net;
  2238.     USHORT    node;
  2239.     USHORT    point;
  2240.  
  2241.     USHORT    zone2;        /* to */
  2242.     USHORT    net2;
  2243.     USHORT    node2;
  2244.     USHORT    point2;
  2245.  
  2246.     USHORT    domain;        /* which fido-net domain? */
  2247.     USHORT    type;        /* normal, crash, hold */
  2248.  
  2249.     USHORT    more[4];
  2250.  
  2251.     ULONG    outcount;
  2252. };
  2253.  
  2254. struct PacketType {
  2255.     struct    PacketType *next;
  2256.  
  2257.     char    filename[32];
  2258. };
  2259.  
  2260. struct ImportType {
  2261.     struct    ImportType *next;
  2262.  
  2263.     USHORT    zone0, net0, node0, point0;
  2264.     ULONG    data;
  2265.  
  2266.     long    seek;
  2267.     long    end;
  2268.     long    seen;        /* index */
  2269.     long    xoff;        /* index */
  2270.  
  2271.     struct    IsDate date;
  2272.  
  2273.     UBYTE    isdupe, isfull;
  2274. };
  2275.  
  2276. struct    DupeType {
  2277.     USHORT    zone;
  2278.     USHORT    net;
  2279.     USHORT    node;
  2280.     USHORT    point;
  2281.     ULONG    data;
  2282. };
  2283.  
  2284. struct    EchoType {
  2285.     char    Title[24];
  2286.     ULONG    ExportTo[4];        /* export to which node types */
  2287.  
  2288.     struct    ImportType *first;    /* during toss, list to import */
  2289.     struct    ImportType *last;
  2290.  
  2291.     USHORT    listn;            /* during toss, which local sub? */
  2292.     USHORT    domain;
  2293.  
  2294.     struct    DupeType *duptab;
  2295.     ULONG    incount;
  2296.     ULONG    outcount;
  2297.  
  2298.     USHORT    dupsize;
  2299.  
  2300.     UBYTE    dupdelta;
  2301.     UBYTE    Access;
  2302.     UBYTE    Flags;
  2303.  
  2304.     UBYTE    other[3];
  2305.  
  2306.     char    Info[48];
  2307. };
  2308.  
  2309. struct    BBSItem {
  2310.     long    ID;
  2311.  
  2312.     char    Phone[16];
  2313.     char    Title[26];
  2314.     char    Location[21];
  2315.     char    Baud[6];
  2316.     char    Comments[62];
  2317.     char    Country[4];
  2318.     char    Flags[10];
  2319.  
  2320.     UBYTE    Immortal;
  2321.  
  2322.     struct    IsDate Date;
  2323. };
  2324.